package com.xmtlxx.oms.domain.vo;

import com.xmtlxx.oms.domain.TaskDisposalInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.xmtlxx.common.annotation.ExcelDictFormat;
import com.xmtlxx.common.convert.ExcelDictConvert;
import com.xmtlxx.common.core.domain.BaseEntity;
import com.xmtlxx.system.domain.SysOss;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * 出入库订单视图对象 t_task
 *
 * @author xmtlxx
 * @date 2022-08-12
 */
@Data
@ApiModel("出入库订单视图对象")
@ExcelIgnoreUnannotated
public class TaskVo extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 订单id
     */
    @ExcelProperty(value = "订单id")
    @ApiModelProperty("订单id")
    private String id;

    /**
     * 订单编号
     */
    @ExcelProperty(value = "订单编号")
    @ApiModelProperty("订单编号")
    private String taskNo;

    /**
     * 类型
     */
    @ExcelProperty(value = "类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "oms_task_type")
    @ApiModelProperty("类型")
    private String type;

    /**
     * 仓库
     */
    @ExcelProperty(value = "仓库")
    @ApiModelProperty("仓库")
    private String storeId;

    /**
     * 物品数量
     */
    @ExcelProperty(value = "物品数量")
    @ApiModelProperty("物品数量")
    private Long nums;

    /**
     * 审批人
     */
    @ExcelProperty(value = "审批人")
    @ApiModelProperty("审批人")
    private String checker;

    /**
     * 审批时间
     */
    @ExcelProperty(value = "审批时间")
    @ApiModelProperty("审批时间")
    private Date checkTime;

    /**
     * 审批状态
     */
    @ExcelProperty(value = "审批状态")
    @ApiModelProperty("审批状态")
    private String checkStatus;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    @ApiModelProperty("备注")
    private String remark;

    /**
     * 物流配送
     */
    @ExcelProperty(value = "物流配送")
    @ApiModelProperty("物流配送")
    private String delivery;

    /**
     * 部门ID
     */
    @ExcelProperty(value = "部门ID")
    @ApiModelProperty("部门ID")
    private Long deptId;

    /**
     * 状态
     */
    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_common_status")
    @ApiModelProperty("状态")
    private String status;

    /**
     * 经度
     */
    @ExcelProperty(value = "经度")
    @ApiModelProperty("经度")
    private String lng;

    /**
     * 纬度
     */
    @ExcelProperty(value = "纬度")
    @ApiModelProperty("纬度")
    private String lat;

    /**
     * 地址
     */
    @ExcelProperty(value = "地址")
    @ApiModelProperty("地址")
    private String address;

    /**
     * 联系方式
     */
    @ExcelProperty(value = "联系方式")
    @ApiModelProperty("联系方式")
    private String tel;

    /**
     * 姓名
     */
    @ExcelProperty(value = "姓名")
    @ApiModelProperty("姓名")
    private String name;

    @ExcelProperty(value = "删除标识", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_del_flag")
    private String delFlag;

    @ApiModelProperty(value = "物品清单")
    private List<TaskDtlVo> items;

    @ApiModelProperty(value = "部门")
    private String deptName;

    @ApiModelProperty(value = "仓库")
    private String storeName;

    @ApiModelProperty(value = "审核人姓名")
    private String checkerName;
    /**
     * 期望上门时间
     */
    @ExcelProperty(value = "期望上门时间")
    @ApiModelProperty("期望上门时间")
    private Date expectTime;

    /**
     * 重量
     */
    @ExcelProperty(value = "重量")
    @ApiModelProperty("重量")
    private BigDecimal weight;

    /**
     * 体积
     */
    @ExcelProperty(value = "体积")
    @ApiModelProperty("体积")
    private BigDecimal volume;

    /**
     * 物证类型
     */
    @ExcelProperty(value = "物证类型")
    @ApiModelProperty("物证类型")
    private String propertyType;

    /**
     * 申请时间
     */
    @ExcelProperty(value = "申请时间")
    @ApiModelProperty("申请时间")
    private Date requestTime;

    @ExcelProperty(value = "签收交接时间")
    @ApiModelProperty(value = "签收交接时间")
    private Date handTime;

    /**
     * 归还时间
     */
    @ExcelProperty(value = "归还时间")
    @ApiModelProperty("归还时间")
    private Date returnTime;
    /**
     * 调用原因
     */
    @ExcelProperty(value = "调用原因")
    @ApiModelProperty("调用原因")
    private String dispatchRemark;
    /**
     * 收件单位
     */
    @ExcelProperty(value = "收件单位")
    @ApiModelProperty("收件单位")
    private Long takeDept;

    /**
     * 收件单位
     */
    private String takeDeptName;
    /**
     * 收件人
     */
    @ExcelProperty(value = "收件人")
    @ApiModelProperty("收件人")
    private String takeContacts;
    /**
     * 收件电话
     */
    @ExcelProperty(value = "收件电话")
    @ApiModelProperty("收件电话")
    private String takeTel;
    /**
     * 收件地址
     */
    @ExcelProperty(value = "收件地址")
    @ApiModelProperty("收件地址")
    private String takeAddress;
    /**
     * 收件经度
     */
    @ApiModelProperty("收件经度")
    private String takeLng;
    /**
     * 收件纬度
     */
    @ApiModelProperty("收件纬度")
    private String takeLat;
    /**
     * 处置方式
     */
    @ExcelProperty(value = "处置方式")
    @ApiModelProperty("处置方式")
    private String dealType;

    /**
     * 下发状态
     */
    @ApiModelProperty("下发状态")
    private String sendStatus;
    /**
     * 再次下发状态
     */
    @ApiModelProperty("再次下发状态")
    private String sendReStatus;
    /**
     * 完成时间
     */
    @ApiModelProperty("完成时间")
    private Date finishTime;

    @ApiModelProperty(value = "配送方式名称")
    private String deliveryName;

    @ApiModelProperty(value = "物品类型/出库方式名称")
    private String propertyTypeName;

    @ApiModelProperty(value = "处置方式名称")
    private String dealTypeName;

    @ApiModelProperty(value = "是否授权")
    private String isTrailer;

    private String source;

    private List<String> ids;

    private List<SysOss> oss;

    @ApiModelProperty(value = "使用的箱子数据")
    private List<BoxVo> boxList;

    /**
     * 部门ID
     */
    @ApiModelProperty("部门")
    private String deptNo;
    /**
     * 收件单位
     */
    @ApiModelProperty("收件单位编码")
    private String takeDeptNo;

    private String propertyNames;

    @ApiModelProperty("是否车辆")
    private String buss;

    @ApiModelProperty("是否取证单")
    private String evidence;

    /**
     * 转调用单号
     */
    @ApiModelProperty("转调用单号")
    private String replaceNo;

    //入库统计
    private Long generallys;
    private Long preciouses;
    private Long larges;
    private Long cars;
    private String dictLabel;
    private String dictValue;

    /**
     * 判断是修改申请还是下发操作
     */
    private String action;

    private Long totals;
    private String deliveryDept;

    private String region;

    /**
     * 保管密码
     */
    @ApiModelProperty("保管密码")
    private String password;

    private String storeDeptName;

    @ApiModelProperty("有无钥匙")
    private String carKey;

    @ApiModelProperty("有无行驶证")
    private String driveLicen;

    @ApiModelProperty("无其他物品")
    private String othreNone;

    @ApiModelProperty("物品统计数量")
    private String properties;

    @ApiModelProperty("归还状态")
    private String returnStatus;
    @ApiModelProperty("归还调用申请ID")
    private String returnId;
    @ApiModelProperty("json参数")
    @Deprecated
    private String info;

    @ApiModelProperty("处置信息")
    private TaskDisposalInfo disposalInfo;

    /**
     * 登记信息
     */
    @ApiModelProperty("登记信息")
    private String registerInfo;

    /**
     * 是否登记
     */
    @ApiModelProperty("是否登记")
    private String isRegister;

    private String addType;

    private String waybillId;
    private Boolean isWaybillShow = false;
    private String isSign;
    private String exWarehouseId;
    private String isCheck;
    private Boolean isShowBtn = false;

    /**
     * 判断是否可编辑
     */
    private Boolean isUpdate = false;

    /**
     * add 新增
     * update 更新
     * back 处置：发还
     */
    private String submitType;

    private String revertMold;

    /**
     * 发还参数接收
     */
    private String backer;//发还人
    private String backTel;//联系电话
    private String backCard;//身份证
    private List<SysOss> backOss;//身份证附件
    private String police;//民警
    private String policeTel;//民警电话
    private List<SysOss> repayOss ;//发还清单
    private List<SysOss> authorizeOss;//授权委托书
    private String relation;//委托人与当事人关系
    private String isDepute;//是否委托他人领取

    /**
     * 销毁参数
     */
    private List<SysOss> ruinOss;//销毁清单

    /**
     * 拍卖
     */
    private List<SysOss> saleOss;//拍卖清单
    /**
     * 出库参数数
     */
    private String pickuper;//取件人
    private String pickupTel;//联系电话
    private String pickupCardType;//证据类型
    private String pickupCard;//证件号

    private String transferNo;//调用单编号

    /**
     * 是否移交区县
     */
    private String isDevolve;

    private String dispatcher;

    private Long dispatcherId;

    private String storeTel;
    private String storePhone;
    private String storeAddress;

    private List<StoreDictVo> dictList;

    private List<SysOss> dealsOss;

    /**
     * 来源
     */
    @ApiModelProperty("处置单来源")
    private String dealSource;

    private List<String> dealIds;

    private List<String> pdfList;
    private List<SysOss> videoList;//视频

    @ApiModelProperty("有无登记书")
    private String registerBook;

    private String signeeName;

    private String projectPickTime;

    private String xzType;

}
